package threading;

/**
 * 主要内容 :
 *  1. 创建线程的时候 可以给线程起一个名字(可重复,可以是中文)
 *  目的就是为了方便程序猿来调试. 一旦出现问题, 可以更方便找到对应的代码~~
 *  如果不手起一个名字, JVM会默认按照 thread-0, thread-1 .... 取名
 *
 *  2. 前台进程 与 后台进程
 */
public class TestDemo7 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            while(true) {
                System.out.println("hello");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, "MyThread-线程");

        // 我们创建的线程默认是前台线程(包括 main 进程), 只要还有一个前台线程没有执行完毕,
        // 即使其他的线程已经执行完毕, 进程也不会结束. 相反, 如果进程中所有的前台进程都已经执行完毕,
        // 无论其余的后台进程是否执行完毕,进程立即结束 !!!

        // 使用setDaemon设置为后台进程 (默认是前台进程 )
        // 未设置前,即使 main 线程执行完毕, 因为 "MyThread-线程" 这个线程是 前台线程, 所以会持续打印,
        // 但设置为后台进程后, 当 main 线程结束后, 因进程中没有了前台进程而结束进程, 所以 "MyThread-线程" 也不再打印了.
        thread.setDaemon(true); // 要在start之前设置.

        thread.start();
        System.out.println("main线程这个前台线程执行完毕!!");
    }
}
